<%#
 (c) Copyright Ascensio System SIA 2020

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
%>

<%= stylesheet_link_tag "editor" %>

<div class="form">
  <div id="iframeEditor">
  </div>
</div>

<script src="<%= Rails.configuration.urlApi %>"></script>

<script type="text/javascript" language="javascript">

    var docEditor;

    var innerAlert = function (message) {
        if (console && console.log)
            console.log(message);
    };

    var onAppReady = function () {
        innerAlert("Document editor ready");
    };

    var onDocumentStateChange = function (event) {
        var title = document.title.replace(/\*$/g, "");
        document.title = title + (event.data ? "*" : "");
    };

    var onRequestEditRights = function () {
        location.href = location.href.replace(RegExp("action=view?&", "i"), "");
    };

    var onError = function (event) {
        if (event)
            innerAlert(event.data);
    };

    var onOutdatedVersion = function (event) {
        location.reload(true);
    };

    var replaceActionLink = function(href, linkParam) {
        var link;
        var actionIndex = href.indexOf("&actionLink=");
        if (actionIndex != -1) {
            var endIndex = href.indexOf("&", actionIndex + "&actionLink=".length);
            if (endIndex != -1) {
                link = href.substring(0, actionIndex) + href.substring(endIndex) + "&actionLink=" + encodeURIComponent(linkParam);
            } else {
                link = href.substring(0, actionIndex) + "&actionLink=" + encodeURIComponent(linkParam);
            }
        } else {
            link = href + "&actionLink=" + encodeURIComponent(linkParam);
        }
        return link;
    }

    var onMakeActionLink = function (event) {
        var actionData = event.data;
        var linkParam = JSON.stringify(actionData);
        docEditor.setActionLink(replaceActionLink(location.href, linkParam));
    };

    var сonnectEditor = function () {

        var config = <%= raw @file.get_config.to_json %>;

        config.width = "100%";
        config.height = "100%";
        config.events = {
            'onAppReady': onAppReady,
            'onDocumentStateChange': onDocumentStateChange,
            'onError': onError,
            'onOutdatedVersion': onOutdatedVersion,
            'onMakeActionLink': onMakeActionLink,
        };

        <%
            h = @file.get_history
            if h %>
            config.events['onRequestHistory'] = function () {
                docEditor.refreshHistory(<%= raw h[:hist].to_json %>);
            };
            config.events['onRequestHistoryData'] = function (event) {
                var ver = event.data;
                var histData = <%= raw h[:histData].to_json %>;
                docEditor.setHistoryData(histData[ver]);
            };
            config.events['onRequestHistoryClose'] = function () {
                document.location.reload();
            };
            <% end
        %>

        docEditor = new DocsAPI.DocEditor("iframeEditor", config);
    };

    if (window.addEventListener) {
        window.addEventListener("load", сonnectEditor);
    } else if (window.attachEvent) {
        window.attachEvent("load", сonnectEditor);
    }

</script>